<?php

require_once ROOT . 'server/classes/arquitetura/helper/AbstractHelper.class.php';

class UsuarioHelper extends AbstractHelper {

    /**
     * Building Usuario object
     * @param $objRequest  Pass $_POST or $_GET or $_REQUEST
     */
    public static function getObjFromRequest($objRequest) {
        $usuario = new Usuario();
        $usuario->setId(Util::getRequestVal($objRequest, 'id'));
        $usuario->setNome(Util::getRequestVal($objRequest, 'nome'));
        $usuario->setSobrenome(Util::getRequestVal($objRequest, 'sobrenome'));
        $usuario->setSexo(Util::getRequestVal($objRequest, 'sexo'));
        $usuario->setEmail(Util::getRequestVal($objRequest, 'email'));
        $usuario->setDtNasc(Util::getRequestVal($objRequest, 'dtNasc'));
        $usuario->setSenha(Util::getRequestVal($objRequest, 'senha'));
        $usuario->setRand(Util::getRequestVal($objRequest, 'rand'));
        $usuario->setAtivo(Util::getRequestVal($objRequest, 'ativo'));
        $usuario->setUpdateDate(Util::getRequestVal($objRequest, 'updateDate'));
        return $usuario;
    }

    /**
     * Building Usuario object
     * @param $objDB  Pass the object returned from Database
     */
    public static function getObjFromDB($objDB) {
        $usuario = new Usuario();
        $usuario->setId(Util::getObjUsingKey($objDB, 'id'));
        $usuario->setNome(Util::getObjUsingKey($objDB, 'nome'));
        $usuario->setSobrenome(Util::getObjUsingKey($objDB, 'sobrenome'));
        $usuario->setSexo(Util::getObjUsingKey($objDB, 'sexo'));
        $usuario->setEmail(Util::getObjUsingKey($objDB, 'email'));
        $usuario->setDtNasc(Util::getObjUsingKey($objDB, 'dt_nasc'));
        $usuario->setSenha(Util::getObjUsingKey($objDB, 'senha'));
        $usuario->setRand(Util::getObjUsingKey($objDB, 'rand'));
        $usuario->setAtivo(Util::getObjUsingKey($objDB, 'ativo'));
        $usuario->setUpdateDate(Util::getObjUsingKey($objDB, 'update_date'));
        return $usuario;
    }

    /**
     * Validando as informações de Usuario.
     */
    public static function validarModel($model) {
        $result = TRUE;
        $erros = array();

        //OBS: A funcao isEmpty deve receber uma variavel e não uma chamada a um metodo

        $nome = $model->getUsuario()->getNome();
        if (Util::isEmpty($nome)) {
            $erros['nome'] = 'Preenchimento obrigatório de Nome.';
        }

        $sobrenome = $model->getUsuario()->getSobrenome();
        if (Util::isEmpty($sobrenome)) {
            $erros['sobrenome'] = 'Preenchimento obrigatório de Sobrenome.';
        }

        $sexo = $model->getUsuario()->getSexo();
        if (Util::isEmpty($sexo)) {
            $erros['sexo'] = 'Preenchimento obrigatório de Sexo.';
        }

        $email = $model->getUsuario()->getEmail();
        if (Util::isEmpty($email)) {
            $erros['email'] = 'Preenchimento obrigatório de Email.';
        } else if (Util::isEmailInvalido($email)) {
            $erros['email'] = 'Email com formato inválido.';
        }

        $dtNasc = $model->getUsuario()->getDtNasc();
        if (Util::isEmpty($dtNasc)) {
            $erros['dtNasc'] = 'Preenchimento obrigatório de Dt Nasc.';
        } else if (Util::isDataInvalido($dtNasc)) {
            $erros['dtNasc'] = 'Data inválida.';
        }

        $senha = $model->getUsuario()->getSenha();
        if (Util::isEmpty($senha)) {
            $erros['senha'] = 'Preenchimento obrigatório de Senha.';
        }

        $rand = $model->getUsuario()->getRand();
        if (Util::isEmpty($rand)) {
            $erros['rand'] = 'Preenchimento obrigatório de Rand.';
        } else if (Util::isIntInvalido($rand)) {
            $erros['rand'] = 'Número inteiro inválido.';
        }

        $ativo = $model->getUsuario()->getAtivo();
        if (Util::isEmpty($ativo)) {
            $erros['ativo'] = 'Preenchimento obrigatório de Ativo.';
        }

        if (IHelper::ZERO < count($erros)) {
            $model->setResult(ResultFactory::newResultFalhaValidacao($erros));
            $result = FALSE;
        }
        return $result;
    }

    /**
     * Build data's part of json
     * @param type $entity
     * @return array.
     */
    public static function getJsonFromEntity($entity) {
        return null;
    }

}

?>
